home *** CD-ROM | disk | FTP | other *** search
/ CD PowerPlay 10 / CD Powerplay Issue 10 (February 1996).iso / hints / onefall / omfenh / enhance.bas next >
Encoding:
BASIC Source File  |  1995-03-04  |  4.6 KB  |  224 lines

  1. '                        OMF ENHANCE version 1.0
  2. '                      by Tim Kilgore [72760,1022]
  3. '                        Written in PDS 7.1 (QBX)
  4. '                    Released into the Public Domain
  5. '                     Sunday, the 3rd of March, 1995
  6. '
  7. ' This program is designed for use with Epic's ONE MUST FALL (OMF).
  8. ' Epic Megagames neither supports or endorses this program.
  9. '
  10. ' This program allows the user to easily modify character files (*.CHR)
  11. ' so that enhancements can be enabled for all robots.
  12. '
  13. ' A word of caution.  Most 'bots only support an enhancement level of
  14. ' 2.  A few support an enhancement level of 3.  If you set the enhancement
  15. ' level above 3, you do so at your own risk.
  16. '
  17. ' Thanks to Ben Sze, David Bollinger, and Craig Landefeld.  These guys
  18. ' indirectly provided me with the information needed to write this program.
  19. '
  20.  
  21.  
  22. '$DYNAMIC
  23. DEFINT A-Z
  24.  
  25. DECLARE SUB Opener ()
  26. DECLARE SUB Status (fhandle)
  27. DECLARE SUB TakeDump (fhandle)
  28.  
  29. DECLARE FUNCTION Decrypt (holder AS STRING, offset)
  30. DECLARE FUNCTION GetName$ (fhandle)
  31.  
  32. 'Decrypt value
  33. CONST XORVAL = &HAC
  34.  
  35. 'Offset of name
  36. CONST NAMEPOS = &H5
  37.  
  38. 'Enhancements offset, 1 added for BASIC...
  39. CONST ENHOFFSET = &HA7
  40.  
  41. COMMON SHARED Robots$(), enhance()
  42. DIM holder AS STRING * 1
  43.  
  44. DIM Robots$(10), enhance(10)
  45.  
  46. 'Read text info from data list
  47. FOR a = 1 TO 10
  48.    READ Robots$(a)
  49. NEXT
  50.  
  51. CLS
  52. Opener
  53.  
  54. IF COMMAND$ = "" THEN
  55.    BEEP
  56.    COLOR 7, 0
  57.    PRINT : PRINT "This program is started as: ";
  58.    COLOR 15
  59.    PRINT "ENHANCE filename.chr"
  60.    COLOR 7
  61.    PRINT : PRINT
  62.    END
  63. ELSE
  64.    file$ = DIR$(COMMAND$)
  65.    IF file$ <> COMMAND$ THEN
  66.       BEEP
  67.       COLOR 7, 0
  68.       PRINT : PRINT "File was not found."
  69.       PRINT : PRINT
  70.       END
  71.    END IF
  72. END IF
  73.  
  74. ff = FREEFILE
  75. OPEN file$ FOR BINARY ACCESS READ WRITE AS #ff
  76.  
  77. Status (ff)
  78.  
  79. DO
  80.    'Get key press
  81.    a$ = UCASE$(INKEY$)
  82.    IF a$ = CHR$(27) OR a$ = "X" THEN EXIT DO
  83.    SELECT CASE a$
  84.       CASE "A" TO "J"
  85.          modified = 1
  86.          'Get enhancement array item to be modifed
  87.          bot = ASC(a$) - 64
  88.          'Increment enhancement array
  89.          enhance(bot) = enhance(bot) + 1
  90.          'Check our bounds, limited to a value of 5 (3 would be safer...)
  91.          IF enhance(bot) > 5 THEN enhance(bot) = 0
  92.          'Put updated info on the screen
  93.          LOCATE bot + 3, 34
  94.          COLOR 28
  95.          PRINT STR$(enhance(bot))
  96.    END SELECT
  97. LOOP
  98.  
  99. IF modified THEN
  100.    LOCATE 17, 1
  101.    COLOR 12
  102.    PRINT "Modifications have been made."
  103.    COLOR 14
  104.    PRINT "Would you like to save these modifications? (";
  105.    COLOR 15
  106.    PRINT "Y";
  107.    COLOR 14
  108.    PRINT "\";
  109.    COLOR 15
  110.    PRINT "n";
  111.    COLOR 14
  112.    PRINT ")"
  113.    DO
  114.       a$ = UCASE$(INKEY$)
  115.       SELECT CASE a$
  116.          CASE CHR$(13), "Y"
  117.             TakeDump ff
  118.             PRINT : PRINT "Your file was saved."
  119.             EXIT DO
  120.          CASE "N"
  121.             EXIT DO
  122.       END SELECT
  123.    LOOP
  124. END IF
  125.  
  126. CLOSE
  127. COLOR 7, 0
  128. END
  129.  
  130. DATA Jaguar, Shadow, Thorn, Pyros, Electra
  131. DATA Katana, Shredder, Flail, Gargoyle, Chronos
  132.  
  133. REM $STATIC
  134. FUNCTION Decrypt (holder AS STRING, offset)
  135.  
  136. Decrypt = (ASC(holder) XOR (XORVAL + (offset - 1))) AND &HFF
  137.  
  138. END FUNCTION
  139.  
  140. FUNCTION GetName$ (fhandle)
  141.  
  142. DIM holder AS STRING * 1
  143.  
  144. SEEK #fhandle, NAMEPOS
  145.  
  146. offset = NAMEPOS
  147. FOR a = 1 TO 16
  148.    GET #fhandle, , holder
  149.    junk$ = CHR$(Decrypt(holder, offset))
  150.    IF junk$ <> CHR$(0) THEN
  151.       work$ = work$ + junk$
  152.    ELSE
  153.       EXIT FOR
  154.    END IF
  155.    offset = offset + 1
  156. NEXT a
  157.  
  158. GetName$ = work$
  159.  
  160. END FUNCTION
  161.  
  162. SUB Opener
  163.  
  164. COLOR 14, 1
  165. PRINT " O M F  E n h a n c e ";
  166. COLOR 9, 0
  167. PRINT " Version 1.0, by Tim Kilgore [72760,1022]"
  168. PRINT
  169. COLOR 7, 0
  170.  
  171. END SUB
  172.  
  173. SUB Status (fhandle)
  174.  
  175. DIM holder AS STRING * 1
  176.  
  177. COLOR 11
  178. PRINT "Enhancement info for " + GetName$(fhandle)
  179.  
  180. SEEK #fhandle, ENHOFFSET
  181. offset = ENHOFFSET
  182. FOR a = 1 TO 10
  183.    GET #fhandle, , holder
  184.    enhance(a) = Decrypt(holder, offset)
  185.    COLOR 15
  186.    PRINT TAB(4); CHR$(a + 64);
  187.    COLOR 14
  188.    PRINT ") " + Robots$(a) + " Enhancement Level:";
  189.    COLOR 10
  190.    PRINT TAB(34); STR$(enhance(a))
  191.    offset = offset + 1
  192. NEXT a
  193.  
  194. PRINT
  195. COLOR 14
  196. PRINT "Press ";
  197. COLOR 15
  198. PRINT "A-J ";
  199. COLOR 14
  200. PRINT "to modify enhancement levels, ";
  201. COLOR 15
  202. PRINT "X ";
  203. COLOR 14
  204. PRINT "to exit."
  205.  
  206. END SUB
  207.  
  208. SUB TakeDump (fhandle)
  209.  
  210. DIM holder AS STRING * 1
  211.  
  212. SEEK #fhandle, ENHOFFSET
  213. offset = ENHOFFSET
  214. FOR a = 1 TO 10
  215.    're-encrypt the data...
  216.    crypt = (enhance(a) XOR (XORVAL + (offset - 1))) AND &HFF
  217.    holder = CHR$(crypt)
  218.    PUT #fhandle, , holder
  219.    offset = offset + 1
  220. NEXT a
  221.  
  222. END SUB
  223.  
  224.